package scene;

import geometrie.Point;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

/**
 * Classe pour la Forme 3D d'un Cube
 * @author Manuel
 * @author Marcos
 */
public class Cube implements Modele3D {

	/** Liste de facettes */
	private List<Facette3D> liste;
	/**Constructeur pour initialiser leurs valeurs
	 * du Cube
	 */
	public Cube(){
		liste = new ArrayList<Facette3D>();		
		createCube();
	}
	/**
	 * Generer les points du Cube et les ajouter a 
	 * la liste de Facettes
	 */
	public void createCube(){
		Point[] p = new Point[8];
		p[0] = new Point(10,10,0);
		p[1] = new Point(10,50,0);
		p[2] = new Point(50,10,0);
		p[3] = new Point(50,50,0);
		// Arriba
		p[4] = new Point(10,10,40);
		p[5] = new Point(10,50,40);
		p[6] = new Point(50,10,40);
		p[7] = new Point(50,50,40);
		
		Facette3D[] f = new Facette3D[12];
		f[0] = new Facette3D(p[0],p[2],p[4]);
		f[1] = new Facette3D(p[2],p[6],p[4]);
		f[2] = new Facette3D(p[0],p[1],p[4]);
		f[3] = new Facette3D(p[1],p[4],p[5]);
		f[4] = new Facette3D(p[1],p[3],p[7]);
		f[5] = new Facette3D(p[5],p[7],p[1]);
		f[6] = new Facette3D(p[2],p[3],p[6]);
		f[7] = new Facette3D(p[3],p[7],p[6]);
		f[8] = new Facette3D(p[0],p[2],p[1]);
		f[9] = new Facette3D(p[1],p[2],p[3]);
		f[10] = new Facette3D(p[4],p[5],p[6]);
		f[11] = new Facette3D(p[6],p[5],p[7]);	
		//Ajouter a la liste pour le Iterateur
		for(int i = 0;i<12;i++)
			liste.add(f[i]);
	}
	/**
	 * Passer l'Iterateur de la Liste
	 */
	@Override
	public Iterator<Facette3D> getFacettes() {
		// TODO Auto-generated method stub
		return liste.iterator();
	}
	/**
	 * Boucher le Trou (il n'y aucun)
	 */
	@Override
	public void triangulePolygone(Point[] point) {
		// TODO Auto-generated method stub
		
	}

}
